분류 전체보기

[LOS] hell_fire

문제 https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php los.rubiya.kr 문제풀이 order 파라미터를 입력받아 정렬을 해준다. if문 조건에 따라 다른 결과값을 이용해 blind injection을 시도한다. 참일 경우 admin id가 첫번째로 나오는 것을 볼 수 있다. 이를 이용해 admin id의 email을 구할 수 있다. - admin email 길이 - admin email - 파이썬 코드 import requests cookie={'PHPSESSID':''} url="..

write-up(web)/los 2023.01.25

[LOS] dark_eyes

문제 https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.php https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.php los.rubiya.kr 문제풀이 이전 문제와 비슷하나 if 문을 쓸 수 없다. union을 사용해서 문제를 해결할 수 있다. 1 부분에 pw을 구하는 식을 넣어 blind injection을 수행하여 pw의 길이와 문자열을 구할 수 있다. ?pw=' || (select 1 union select 2)# --> 빈 화면 출력 - pw 길이 - pw 문자열 - 파이썬 코드 import requests cookie={'PHPSESSID':..

write-up(web)/los 2023.01.24

[SQL Injection] Error&Time based

Error based SQL Injection 임의로 에러를 발생시켜 데이터베이스 및 운영체제 정보 획득하는 공격 기법 실행결과를 출력하는 코드가 존재하지 않고 쿼리 실행 결과만 판단한다. 오류 발생 시 발생원인이 출력되며, 오류메시지를 통해 공격에 필요한 다양한 정보 수집이 가능하다. - 공격 코드 select extractvalue(1,concat(0x3a, version())); 에러 메시지에 운영체제에 대한 정보가 포함된다. - extractvalue extractvalue([XML 데이터],[XPATH 식]) 첫번째 인자로 전달된 XML 데이터에서 두번째 인자인 XPATH 식을 통해 데이터 추출이 가능하다. 두번째 인자가 올바르지 않은 XPATH 식일 경우, 에러메시지와 함께 잘못된 식이 출력된..

security/web 2023.01.24

extractvalue()

설명 XML에서 XPath 표현식에 일치하는 데이터를 추출하여 반환 extractvalue(xml_frag, xpath_expr) 두번째 인수에 유효하지 않은 XPath 표현식이 사용된다면 오류 발생 ERROR 1105 (HY000): XPATH syntax error: '[xpath_expr 인수값]') 인수 xml_frag : XML 마크업 xpath_expr : XPath 식으로 지정 error based injection 두번째 인수에 임의의 SQL 쿼리를 지정했을 때 이 쿼리의 실행결과가 오류 메시지에 포함되어 출력된다. 이 점을 이용해 error based injection 수행이 가능하다. 두번째 인수가 항상 유효하지 않은 XPath 표현식이 되도록 하기 위해 concat 함수를 이용해 콜론..

programming/sql 2023.01.24

[LOS] iron_golem

문제 https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php los.rubiya.kr 문제풀이 이전 문제들과 다르게 쿼리문이 잘못되었을 때 에러문만 출력된다. 이를 이용하여 if문과 잘못된 쿼리문으로 blind injection을 시도하여 pw의 길이와 문자열을 추측할 수 있다. (error based sql injection) - 파이썬 코드 import requests cookie={'PHPSESSID':''} url="https://los.rubiya.kr/chall/iron_golem..

write-up(web)/los 2023.01.24

asciicode / unicode

- 기초 컴퓨터의 기본 저장 단위 : 바이트 1byte=8bit 1byte=2^8에 해당하는 256개의 값 저장 가능 문자나 기호들의 집합을 컴퓨터에서 저장하거나 사용할 경우, 부호로 바꾸어야 한다. 이를 문자 인코딩 또는 부호화라고 하며, 복원하는 것은 복호화라고 한다. - ascii (American Standard Code for Information Interchange, 아스키) code 미국에서 정의한 표준화한 부호체계 7비트, 128개의 고유한 값을 사용하며 1비트는 통신 에러 검출(parity bit)을 위해 사용한다. 0-127까지 각각 고유한 값이 할당되어 있다. - ansicode 8비트로 확장한 아스키 코드 - unicode 전세계 언어의 문자를 정의하기 위한 국제 표준 코드 2by..

programming/etc 2023.01.23

[LOS] xavis

문제 https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php los.rubiya.kr 문제풀이 이전 문제들과 비슷하게 blind injection을 통해 pw의 길이와 문자열을 알아내려 했는데, pw 문자열이 출력되지 않았다. pw 한 글자마다 2진수를 출력하여 몇 bit인지 알아내어 어떤 문자가 사용되었는지 알아봤다. 16bit가 사용된 것으로 보아 unicode 인 것 같다. 한 글자마다 hex 값이기 때문에 hex 함수를 이용해 길이와 문자열을 구할 수 있다. - 파이썬 코드 import requests..

write-up(web)/los 2023.01.23

SELECT @local_variable

- 의미 지역변수 설정 변수 할당에는 SELECT @local_variable 대신 SET @local_variable을 사용하는 것이 좋다. - 구문 SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n] [ ; ] - 인수 @local_variable 값을 할당할 선언된 변수 오른쪽 값을 왼쪽의 변수에 할당 복합 할당 연산자 사용 가능 expression 유효한 식 - 취약점 union 구문이 필터링 되어있지 않을 때 이를 이용해서 정보를 얻을 수 있다. id가 admin인 pw를 @test 변수에 할당한다. SELECT @test:=pw WHERE id='admin' 쿼리문 자체는 변수에 ..

programming/sql 2023.01.23

[LOS] dragon

문제 https://los.rubiya.kr/chall/dragon_51996aa769df79afbf79eb4d66dbcef6.php https://los.rubiya.kr/chall/dragon_51996aa769df79afbf79eb4d66dbcef6.php los.rubiya.kr 문제풀이 id=guest’# 기본 쿼리문으로 입력되는 pw 파라미터는 주석 처리된다. 개행문자(%0a)를 이용해 입력되는 값이 주석처리에 의해 무효화되지 않게 해야 한다. select id from prob_dragon where id='guest'# and pw=''%0a and pw='' || id='admin'

write-up(web)/los 2023.01.23