suctf2019 部分web題目的覆盤

2022-03-24 06:10:27 字數 1116 閱讀 8768

1.簡單的sql注入

一開始一直沒思路,輸入什麼過濾什麼,結束後看了大佬們的wp,感覺學到了,這裡涉及到mysql中的乙個特殊模式的設定

set sql_mode=pipes_as_concat;
這一句sql語句的意思是開啟mysql中支援管道符來進行字串的拼接操作

測試一下效果

簡單準備的原始資料表

沒有開啟這個模式的時候

這裡並沒有出現字串的拼接效果

開啟這個模式後

可以從上圖看到,資料表中的資料被帶出來了,下面這張圖更清晰

因此,假定上面那道題支援開啟這個模式的話,就可以遍歷資料庫字段,嘗試拿flag

大致猜測查詢語句是select 查詢引數 from 資料表;的結構,那麼我們可以直接拼接

select 1;set sql_mode=pipes_as_concat;select 1 from 資料表
只輸入數字進行查詢是因為,執行數字時有回顯,判斷是執行成功的,查詢字串則會報錯,一般來說php會設定預設不顯示報錯資訊,因此使用數字查詢開啟這個模式來手動構造注入漏洞

payload:1;set sql_mode=pipes_as_concat;select 1

flag拿到了

題外話

關於mysql的模式設定,可以替換為其他的模式,傳統的,標準的,嚴格的,等等

我們常設定的 sql_mode 是ansistrict_trans_tablestraditional,ansi和traditional是上面的幾種組合。

參考:

CSP S2019部分題解

這其實是某年的一道初賽題,但筆者刷初賽的時候嫌太麻煩了沒去看.然鵝它考了,這倒無所謂,d1t1 難度還是做得出來的.通過觀察構造方法,我們可以發現,乙個有若干位的格雷碼一定是從最高層起每一層都去掉乙個高位,最後得到空串.我們還可以發現,乙個格雷碼在某一層應該去掉的高位是 0 還是 1 只與它位於該層...

codeforces div2 525 部分題解

a.ehab and another construction problem 題目 傳送門a 按照題目的要求,只需要將輸入的x列印兩遍就可以了。注意還有x 1的情況,這樣只需要列印 1即可。如下 include include include include using namespace std...

演算法題練習05 部分A B

正整數a的 da 為1位整數 部分 定義為由a中所有da組成的新整數pa。例如 給定a 3862767,da 6,則a的 6部分 pa是66,因為a中有2個6。現給定a da b db,請編寫程式計算pa pb。輸入在一行中依次給出a da b db,中間以空格分隔,其中0 a,b 1010。在一行...